package com.dragon.modules.yuegou.service.product;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.product.HelpMemberRefEntity;
import com.dragon.modules.yuegou.model.product.HelpMemberRef;
import com.dragon.modules.yuegou.query.product.HelpMemberRefListQuery;

import java.math.BigDecimal;

/**
 * 会员参加助力活动表 服务接口
 *
 * @author px
 * @date 2019-04-12 09:11:44
 * @version 2.0
 */
public interface HelpMemberRefService extends IService<HelpMemberRefEntity> {

	/**
	 * 查询我的助力列表
	 * @param pageInfo
	 * @param busdId
	 * @param memberId 
	 * @return
	 */
	IPage<HelpMemberRef> myHelp(PageRequest pageInfo, String busdId, String memberId);


	/**
	 * 查询我的助力列表
	 * @param pageInfo
	 * @param busdId
	 * @param memberId
	 * @return
	 */
	IPage<HelpMemberRef> myHelp(PageRequest pageInfo, String busdId, String memberId,Integer status);
	
	/**
	 * 查询其他助力列表
	 * @param page
	 * @param busdId
	 * @return
	 */
	IPage<HelpMemberRef> otherHelpList(PageRequest page, String busdId, String helpId);

	/**
	 * 获取该助力活动下会员最新助力活动
	 * @param helpId 助力活动
	 * @param memberId 会员ID
	 * @return
	 */
	HelpMemberRef getNewHelp(String helpId, String memberId);

	/**
	 * 当前会员助力该活动
	 * @param helpMemberRefId
	 */
	HelpMemberRef friendHelp(String helpMemberRefId, String memberId);
	
	/**
	 * 会员发起助力的同步方法
	 * @param memberRefId
	 * @return
	 */
	HelpMemberRef syncFriendHelp(String memberRefId, BigDecimal randValue,String memberId);

	/**
	 * 获取助力详情
	 * @param id
	 */
	HelpMemberRef getDetail(String id);

	/**
	 * 会员发起助力活动
	 * @param helpId
	 */
	HelpMemberRef init(String helpId);

	/**
	 * 用户直接购买是，验证是否已经发起过助力，如果未发起直接购买，则创建一条发起记录，再下单；如果24小时内存在发起的记录，则直接用这条记录下单
	 * @param helpId
	 * @return
	 */
	HelpMemberRef orderForHelpMemberRef(String helpId);

	/**
	 * 集团版查询助力记录列表
	 * @param page
	 * @param query
	 * @return
	 */
	IPage<HelpMemberRef> searchRecord(PageRequest page, HelpMemberRefListQuery query);

	/**
	 * 生成海报
	 * @param helpMemberRefId
	 * @return
	 */
	HelpMemberRef posters(String helpMemberRefId);

	/**
	 * 支付回调
	 * @param orderNo
	 */
	void payCallBack(String orderNo);

	/**
	 * 定时任务：用于检查主力活动是否过期
	 */
	void helpCheckTimeOut();

}